package com.nuedu.corejava.ch5;


/**<pre>
 *    文档注释:用于生成api文档或在编码时可以进行使用提示：
 *    文档注释支持使用部分HTML网页标签和css样式；
 * 
 * java 类中方法定义：
 *   1.实例方法与类方法
 *   
 *   
 *   2.有参数方法和无参数方法
 *   
 *   
 *   3.有返回值方法和无返回值方法
 *   
 *   4.方法的定义和方法的调用/使用
 *   
 *   5.基本数据类型与引用数据类型
 *   
 *   
 *  </pre>
 * 
 * @author admin
 *
 */
public class MethodsClass {
	
	//使用static修饰的方法叫做类方法或静态方法；类方法可以直接通过类名进行调用（不需要实例化对象）
	public static void printColor(char color){
		System.out.println(color);
	}
	
	//设计一个方法，接受两个整数进行加法计算，并返回和
	//注意：在方法定义时，如果声明了返回值类型，则必须在方法体中使用return语句返回一个类型匹配的值；
	public int  add(int a,int b) {
		//如果方法存在多个分支，则每个分支都需要使用return语句返回一个值
		
//		if (a==0&&b==0){
//			return 0;
//		}else {
//			int c=a+b;
//			return c;
//		}
		
//		当方法内部需要返回不同值时，可以使用多个return语句在不同情况下返回不同的值
		//也可以根据不同的情况，修改统一的返回变量的值；再在方法的后面使用同一个return语句返回变量值
		int ret = 0;
		if(a==0&&b==0){
			ret=-1;
		}else {
			ret=a+b;
		}
		return ret;
	}
	
	//方法可以没有参数和没有返回值，当方法没有返回值时，需要使用void进行声明
	//void关键词表示void类型，表示没有数据类型
	// private是访问修饰符号，表示私有的意思；使用private修饰的实例变量或方法，只能在该类内部使用
	//java的访问修饰符号共有四类：public 共有的；protected受保护的；默认（不写）；private私有的；
	private void printColor() {
		System.out.println("红色");
	}
	
	//访问修饰符是protected表示受保护的
	protected void printColor(String color){
		System.out.println(color);
	}
	//访问修饰符是（default）默认的
	//方法的重载：在同一个类中，方法名相同，参数列表不相同（参数的个数不同，参数的类型不同，类型的顺序不同），与访问修饰符无关，与返回值类型无关；与static修饰符无关
	
	public void printColor(String color,int count){
		for(int i=0;i<count;i++){
			System.out.println(color);
		}
	}
	protected void printColor(int count,String color){
		for(int i=0;i<count;i++){
			System.out.println(color);
		}
	}
	void printColor(int count){
		for(int i=0;i<count;i++){
			System.out.println("红色");
		}
	}
	
	
	public static void main(String[] args) {
		//没有使用static修饰的方法，称为实例方法；
		//使用static修饰的方法称为类方法或静态方法；
		//实例方法必须通过实例对象进行调用
		//类与对象的关系，类实例化
		//mClass是一个实例变量的引用，经常把它称为实例对象
		MethodsClass mClass=new MethodsClass();
		//对象引用/调用方法或属性/实例变量的操作符号时点号（.）
		//方法重载后，在调用方法时，jvm能够根据参数类型列别自动识别并条用不同方法
		//为什么要重载？方便进行功能的维护和扩展，提供程序的可维护性和可扩展性；
		mClass.printColor();
		mClass.printColor("紫色");
		mClass.printColor("蓝色",3);
		mClass.printColor(4,"橙色");
		mClass.printColor(5);
		
		
		//类方法（静态方法)可以使用类名.方法名进行调用
		MethodsClass.printColor('黑');//public 
		//如果在同一个类中，可以省略类名；
		printColor('黑');
		
		
	}
	


}
